package conf;

/**
 * Carries all global variables within it.
 * @author Frans Honig, Maxime Serrano, Raphael Townshend
 */
public class Configuration
{
	/**
	 * The weights for the students based on if their late
	 */
	public static final int LATE_WEIGHT = 6;
	
	/**
	 * Heuristic grade level for a freshman.
	 */
	public static final int FRESHMAN_NORMAL_HEURISTIC_WEIGHT = 9;
	
	/**
	 * The weight for a freshman.
	 */
	public static final int FRESHMAN_WEIGHT = 9;
	
	/**
	 * The weights for the students based on their grade level
	 */
	public static final int GRADE_HEURISTIC_OFFSET = FRESHMAN_NORMAL_HEURISTIC_WEIGHT - FRESHMAN_WEIGHT;
	
	/**
	 * The weights for the students based on their course choice
	 */
	public static final int CHOICE_HEURISTIC_OFFSET = 1;
	
	/**
	 * The weights for the students based on their second choice
	 */
	public static final int SECOND_CHOICE_MULTIPLIER = 2;
	
	/**
	 * The modifier of desirability score if late 
	 */
	public static final double DESIRABILITY_LATE_DENOMINATOR = 1.5;
	
	/**
	 * The modifier of desirability score if student = teacher 
	 */
	public static final double DESIRABILITY_TEACHER_MULTIPLIER = 1;
	
	/**
	 * The modifier of desirability score for grade level
	 */
	public static double DESIRABILITY_GRADE_OFFSET = 4;
	
	/**
	 * LOL
	 */
	public static double DESIRABILITY_DIVISOR_OFFSET = 34;
	
	/**
	 * The file name for the program
	 */
	public static final String DEFAULT_STUDENT_FILE_NAME = "Knight_School_Signups.csv";
	
	/**
	 * The file name for the course caps
	 */
	public static final String DEFAULT_COURSE_FILE_NAME = "KS_Course_Caps.csv";
	
	/**
	 * The file name for the output
	 */
	public static final String DEFAULT_OUTPUT_FILE_NAME = "out.txt";
	
	/**
	 * The number of choices each student is required to fill out.
	 */
	public static int NUM_CLASS_CHOICES = 4;
	
	public static final int REAL_NUM_CLASS_CHOICES = 6;
	
	/**
	 * Number of times resolve is called
	 */
	public static final int NUM_RESOLUTIONS = 1000;
	
	/**
	 * Checked against the choice number in Student in order to determine eligibility.
	 */
	public static final int COURSE_CHOICE_BAR = 2;
	
	/**
	 * The minimum number of students that can be in a course in order for the course to exist.
	 */
	public static final int MIN_STUDENTS_PER_COURSE = 4;
	
	/**
	 * Whether or not to print the debug information.
	 */
	public static final boolean DEBUG = false;
	
	public static final int LAST_CHOICE_SCORE_INCREASE = 2;
}
